/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.lista05;

/**
 *
 * @author Mendel
 */
public abstract class Tarefa {

    private int codigo;
    private String descricao;
    private String data;
    private int horaInicio;
    private int duracao;
    private String local;
    private int importancia;
    private int urgencia;
    private double valorHora;
    private double valorCobrado;
    private String status;
    
    public Tarefa(int pCodigo, String pDescricao, String pData, int pDuracao, String pLocal)
    {
        this.codigo = pCodigo;
        this.descricao = pDescricao;
        this.data = pData;
        this.duracao = pDuracao;
        this.local = pLocal;
        this.importancia = 1;
        this.urgencia = 1;
        this.valorCobrado = 0.0;
        this.valorHora = 0.00;
        this.status = "P";
    }
    public Tarefa(int pCodigo, String pDescricao, String pData, int pDuracao, String pLocal, int pImportancia, int pUrgencia, double pValorHora)
    {
        this.codigo = pCodigo;
        this.descricao = pDescricao;
        this.data = pData;
        this.duracao = pDuracao;
        this.local = pLocal;
        this.importancia = pImportancia;
        this.urgencia = pUrgencia;
        this.valorCobrado = 0.0;
        this.valorHora = pValorHora;
        this.status = "P";
    }
    
    public void encerrarTarefa(double pValorCobrado)
    {
        this.valorCobrado = pValorCobrado;
        this.status = "F";
    }
    public void iniciarTarefa()
    {
        this.status = "A";
        this.valorCobrado = this.valorHora*this.duracao*((this.importancia + this.urgencia)/2);
        System.out.println("A Tarefa foi alterada com sucesso.");
    }
    public void incrementaImportancia()
    {
        if(this.status.equals("P") && this.importancia < 5)
        {
            this.importancia++;
        }
        else
        {
            System.out.println("###OBS.: Esta operação só pode ser realizada se o status da transação estiver 'P' ou o valor de importância seja menor que 5.");
        }
    }
    public void decrementaImportancia()
    {
        if(this.status.equals("P") && this.importancia > 1)
        {
            this.importancia--;
        }
        else
        {
            System.out.println("###OBS.: Esta operação só pode ser realizada se o status da transação estiver 'P' ou o valor de importância seja maior que 1.");
        }
    }
    public void incrementaUrgencia()
    {
        if(this.status.equals("P") && this.urgencia < 5)
        {
            this.urgencia++;
        }
    }
    public void decrementaUrgencia()
    {
        if(this.status.equals("P") && this.urgencia > 1)
        {
            this.urgencia--;
        }
    }
    
    public abstract void cancelarTarefa();
    
    public int getCodigo() 
    {
        return codigo;
    }

    public String getData() 
    {
        return data;
    }

    public void setData(String data) 
    {
        this.data = data;
    }

    public String getDescricao() 
    {
        return descricao;
    }

    public void setDescricao(String descricao) 
    {
        this.descricao = descricao;
    }

    public int getDuracao() 
    {
        return duracao;
    }

    public void setDuracao(int duracao)
    {
        this.duracao = duracao;
    }

    public int getHoraInicio() 
    {
        return horaInicio;
    }

    public void setHoraInicio(int horaInicio) 
    {
        this.horaInicio = horaInicio;
    }

    public int getImportancia()
    {
        return importancia;
    }

    public void setImportancia(int importancia)
    {
        this.importancia = importancia;
    }

    public String getLocal() 
    {
        return local;
    }

    public void setLocal(String local)
    {
        this.local = local;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public int getUrgencia() 
    {
        return urgencia;
    }

    public void setUrgencia(int urgencia) 
    {
        this.urgencia = urgencia;
    }

    public double getValorHora()
    {
        return valorHora;
    }

    public void setValorHora(double valorHora) 
    {
        this.valorHora = valorHora;
    }

    public void setValorCobrado(double valorCobrado)
    {
        this.valorCobrado = valorCobrado;
    }
    public double getValorCobrado() 
    {
        return valorCobrado;
    }
    
}
